package ch.fusun.baron.city.api;

import java.util.Collection;

import ch.fusun.baron.city.City;
import ch.fusun.baron.data.DataProvider;
import ch.fusun.baron.map.Tile;

/**
 * The service for city modification
 */
public interface CityService extends DataProvider {

	/**
	 * @param tile
	 *            The tile
	 * @param city
	 *            The city
	 */
	void setCity(Tile tile, City city);

	/**
	 * @param model
	 *            The model
	 * @return The city on the tile
	 */
	City getCity(Tile model);

	/**
	 * @param city
	 *            The city
	 * @return The tile on which the city lies
	 */
	Tile getLocation(City city);

	/**
	 * @param tile
	 *            The tile on which to create a city
	 */
	void createCity(Tile tile);

	/**
	 * @param city
	 *            The city to remove
	 */
	void removeCity(City city);

	/**
	 * @return All the cities
	 */
	Collection<City> getCities();

}
